import type {
  TagForm,
  TagGroupForm,
  TagGroupQuery,
  TagGroupVO,
  TagQuery,
  TagVO,
} from './model';

import type { ID, IDS, PageResult } from '#/api/common';

import { commonExport } from '#/api/helper';
import { requestClient } from '#/api/request';

/**
 * 查询公司标签组列表 - 不分页
 * @param params
 * @returns 公司标签组列表
 */
export function tagGroupList(params?: TagGroupQuery) {
  return requestClient.get<TagGroupVO[]>('/company/label/group/list', {
    params,
  });
}

/**
 * 查询公司标签组详情
 * @param id id
 * @returns 公司标签组详情
 */
export function tagGroupInfo(id: ID) {
  return requestClient.get<TagGroupVO>(`/company/label/group/${id}`);
}

/**
 * 新增公司标签组
 * @param data
 * @returns void
 */
export function tagGroupAdd(data: TagGroupForm) {
  return requestClient.postWithMsg<void>('/company/label/group', data);
}

/**
 * 更新公司标签组
 * @param data
 * @returns void
 */
export function tagGroupUpdate(data: TagGroupForm) {
  return requestClient.putWithMsg<void>('/company/label/group', data);
}

/**
 * 删除公司标签组
 * @param id id
 * @returns void
 */
export function tagGroupRemove(id: ID | IDS) {
  return requestClient.deleteWithMsg<void>(`/company/label/group/${id}`);
}

/**
 * 修改标签组状态
 * @param data
 */
export function tagGroupChangeStatus(data: Partial<TagGroupVO>) {
  const requestData = {
    id: data.id,
    status: data.status,
  };
  return requestClient.putWithMsg<void>(
    `/company/label/group/changeStatus`,
    requestData,
  );
}

/**
 * 分页查询企业标签列表
 * @param params
 * @returns 企业标签列表
 */
export function tagPage(params?: TagQuery) {
  return requestClient.get<PageResult<TagVO>>('/company/label/page', {
    params,
  });
}

/**
 * 查询企业标签列表
 * @param params
 * @returns 企业标签列表
 */
export function tagList(params?: TagQuery) {
  return requestClient.get<TagVO[]>('/company/label/list', {
    params,
  });
}

/**
 * 导出企业标签列表
 * @param params
 * @returns 企业标签列表
 */
export function tagExport(params?: TagQuery) {
  return commonExport('/company/label/export', params ?? {});
}

/**
 * 查询企业标签详情
 * @param id id
 * @returns 企业标签详情
 */
export function tagInfo(id: ID) {
  return requestClient.get<TagVO>(`/company/label/${id}`);
}

/**
 * 新增企业标签
 * @param data
 * @returns void
 */
export function tagAdd(data: TagForm) {
  return requestClient.postWithMsg<void>('/company/label', data);
}

/**
 * 更新企业标签
 * @param data
 * @returns void
 */
export function tagUpdate(data: TagForm) {
  return requestClient.putWithMsg<void>('/company/label', data);
}

/**
 * 删除企业标签
 * @param id id
 * @returns void
 */
export function tagRemove(id: ID | IDS) {
  return requestClient.deleteWithMsg<void>(`/company/label/${id}`);
}

/**
 * 批量修改标签排序
 * @param tagList
 */
export function tagChangeSort(tagList: TagVO[]) {
  return requestClient.postWithMsg<void>(`/company/label/changeSort`, tagList);
}

/**
 * 修改标签状态
 * @param data
 */
export function tagChangeStatus(data: Partial<TagVO>) {
  const requestData = {
    id: data.id,
    status: data.status,
  };
  return requestClient.putWithMsg<void>(
    `/company/label/changeStatus`,
    requestData,
  );
}
